﻿
namespace ASPItalia.ModelVirtualCasting.Web.RiaServices
{
  using System;
  using System.Collections.Generic;
  using System.ComponentModel;
  using System.ComponentModel.DataAnnotations;
  using System.Data.Objects.DataClasses;
  using System.Linq;
  using System.ServiceModel.DomainServices.Hosting;
  using System.ServiceModel.DomainServices.Server;


  // The MetadataTypeAttribute identifies CountriesMetadata as the class
  // that carries additional metadata for the Countries class.
  [MetadataTypeAttribute(typeof(Countries.CountriesMetadata))]
  public partial class Countries
  {

    // This class allows you to attach custom attributes to properties
    // of the Countries class.
    //
    // For example, the following marks the Xyz property as a
    // required property and specifies the format for valid values:
    //    [Required]
    //    [RegularExpression("[A-Z][A-Za-z0-9]*")]
    //    [StringLength(32)]
    //    public string Xyz { get; set; }
    internal sealed class CountriesMetadata
    {

      // Metadata classes are not meant to be instantiated.
      private CountriesMetadata()
      {
      }

      public int CountryID { get; set; }

      public string CountryName { get; set; }

      public string IsoCode { get; set; }

      public EntityCollection<People> People { get; set; }

      public EntityCollection<People> People1 { get; set; }
    }
  }

  // The MetadataTypeAttribute identifies JobLevelsMetadata as the class
  // that carries additional metadata for the JobLevels class.
  [MetadataTypeAttribute(typeof(JobLevels.JobLevelsMetadata))]
  public partial class JobLevels
  {

    // This class allows you to attach custom attributes to properties
    // of the JobLevels class.
    //
    // For example, the following marks the Xyz property as a
    // required property and specifies the format for valid values:
    //    [Required]
    //    [RegularExpression("[A-Z][A-Za-z0-9]*")]
    //    [StringLength(32)]
    //    public string Xyz { get; set; }
    internal sealed class JobLevelsMetadata
    {

      // Metadata classes are not meant to be instantiated.
      private JobLevelsMetadata()
      {
      }

      public int JobLevelID { get; set; }

      public string JobLevelName { get; set; }

      public EntityCollection<People> People { get; set; }

      public int Priority { get; set; }
    }
  }

  // The MetadataTypeAttribute identifies JobTypesMetadata as the class
  // that carries additional metadata for the JobTypes class.
  [MetadataTypeAttribute(typeof(JobTypes.JobTypesMetadata))]
  public partial class JobTypes
  {

    // This class allows you to attach custom attributes to properties
    // of the JobTypes class.
    //
    // For example, the following marks the Xyz property as a
    // required property and specifies the format for valid values:
    //    [Required]
    //    [RegularExpression("[A-Z][A-Za-z0-9]*")]
    //    [StringLength(32)]
    //    public string Xyz { get; set; }
    internal sealed class JobTypesMetadata
    {

      // Metadata classes are not meant to be instantiated.
      private JobTypesMetadata()
      {
      }

      public int JobTypeID { get; set; }

      public string JobTypeName { get; set; }

      public EntityCollection<People> People { get; set; }

      public int Priority { get; set; }

      public EntityCollection<Requests> Requests { get; set; }
    }
  }

  // The MetadataTypeAttribute identifies LanguagesMetadata as the class
  // that carries additional metadata for the Languages class.
  [MetadataTypeAttribute(typeof(Languages.LanguagesMetadata))]
  public partial class Languages
  {

    // This class allows you to attach custom attributes to properties
    // of the Languages class.
    //
    // For example, the following marks the Xyz property as a
    // required property and specifies the format for valid values:
    //    [Required]
    //    [RegularExpression("[A-Z][A-Za-z0-9]*")]
    //    [StringLength(32)]
    //    public string Xyz { get; set; }
    internal sealed class LanguagesMetadata
    {

      // Metadata classes are not meant to be instantiated.
      private LanguagesMetadata()
      {
      }

      public string IsoCode { get; set; }

      public int LanguageID { get; set; }

      public string LanguageName { get; set; }

      public EntityCollection<People> People { get; set; }

      public EntityCollection<People> People1 { get; set; }

      public int Priority { get; set; }
    }
  }

  // The MetadataTypeAttribute identifies MultimediaMetadata as the class
  // that carries additional metadata for the Multimedia class.
  [MetadataTypeAttribute(typeof(Multimedia.MultimediaMetadata))]
  public partial class Multimedia
  {

    // This class allows you to attach custom attributes to properties
    // of the Multimedia class.
    //
    // For example, the following marks the Xyz property as a
    // required property and specifies the format for valid values:
    //    [Required]
    //    [RegularExpression("[A-Z][A-Za-z0-9]*")]
    //    [StringLength(32)]
    //    public string Xyz { get; set; }
    internal sealed class MultimediaMetadata
    {

      // Metadata classes are not meant to be instantiated.
      private MultimediaMetadata()
      {
      }

      public string FileMimeType { get; set; }

      public string FileName { get; set; }

      [Key]
      public int MultimediaID { get; set; }

      public string MultimediaType { get; set; }

      public EntityCollection<People> People { get; set; }
    }
  }

  // The MetadataTypeAttribute identifies NewsMetadata as the class
  // that carries additional metadata for the News class.
  [MetadataTypeAttribute(typeof(News.NewsMetadata))]
  public partial class News
  {

    // This class allows you to attach custom attributes to properties
    // of the News class.
    //
    // For example, the following marks the Xyz property as a
    // required property and specifies the format for valid values:
    //    [Required]
    //    [RegularExpression("[A-Z][A-Za-z0-9]*")]
    //    [StringLength(32)]
    //    public string Xyz { get; set; }
    internal sealed class NewsMetadata
    {

      // Metadata classes are not meant to be instantiated.
      private NewsMetadata()
      {
      }

      public bool IsPublished { get; set; }

      public DateTime NewsDate { get; set; }

      public int NewsID { get; set; }

      public string NewsText { get; set; }

      public string NewsTitle { get; set; }

      public Nullable<DateTime> PublicationDate { get; set; }
    }
  }

  // The MetadataTypeAttribute identifies PeopleMetadata as the class
  // that carries additional metadata for the People class.
  [MetadataTypeAttribute(typeof(People.PeopleMetadata))]
  public partial class People
  {

    // This class allows you to attach custom attributes to properties
    // of the People class.
    //
    // For example, the following marks the Xyz property as a
    // required property and specifies the format for valid values:
    //    [Required]
    //    [RegularExpression("[A-Z][A-Za-z0-9]*")]
    //    [StringLength(32)]
    //    public string Xyz { get; set; }
    internal sealed class PeopleMetadata
    {

      // Metadata classes are not meant to be instantiated.
      private PeopleMetadata()
      {
      }

      public string Availability { get; set; }

      public DateTime BirthDate { get; set; }

      public int BodyHeight { get; set; }

      public int BodySize { get; set; }

      public bool CanBeNaked { get; set; }

      public int ChestMeasurement { get; set; }

      public Countries Countries { get; set; }

      public Countries Countries1 { get; set; }

      public string EmailAddress { get; set; }

      public Nullable<DateTime> EndDate { get; set; }

      public int Experience { get; set; }

      public string EyesColor { get; set; }

      public string FirstName { get; set; }

      public string FiscalCode { get; set; }

      public string Gender { get; set; }

      public string HairColor { get; set; }

      public int HipMeasurement { get; set; }

      public Nullable<decimal> HourlyRate { get; set; }
            
     [Key]
      public int ID { get; set; }

      public DateTime InsertionDate { get; set; }

      public bool IsFeatured { get; set; }

      public bool IsVisible { get; set; }

      public int JobLevelID { get; set; }

      public JobLevels JobLevels { get; set; }

      public EntityCollection<JobTypes> JobTypes { get; set; }

      public Languages Languages { get; set; }

      public Languages Languages1 { get; set; }

      public string LastName { get; set; }

      [Include]
      [Association("Multimedia", "ID", "MultimediaID")]
      public EntityCollection<Multimedia> Multimedia { get; set; }

      public int NationalityCountryID { get; set; }

      public string NickName { get; set; }

      public string PhoneNumber { get; set; }

      public int PrimaryLanguageID { get; set; }

      public EntityCollection<Requests> Requests { get; set; }

      public string ResidenceCity { get; set; }

      public int ResidenceCountryID { get; set; }

      public Nullable<int> SecondaryLanguageID { get; set; }

      public int ShoesSize { get; set; }

      public Nullable<DateTime> StartDate { get; set; }

      public string Type { get; set; }

      public string VatCode { get; set; }

      public int WaistMeasurement { get; set; }
    }
  }

  // The MetadataTypeAttribute identifies RequestsMetadata as the class
  // that carries additional metadata for the Requests class.
  [MetadataTypeAttribute(typeof(Requests.RequestsMetadata))]
  public partial class Requests
  {

    // This class allows you to attach custom attributes to properties
    // of the Requests class.
    //
    // For example, the following marks the Xyz property as a
    // required property and specifies the format for valid values:
    //    [Required]
    //    [RegularExpression("[A-Z][A-Za-z0-9]*")]
    //    [StringLength(32)]
    //    public string Xyz { get; set; }
    internal sealed class RequestsMetadata
    {

      // Metadata classes are not meant to be instantiated.
      private RequestsMetadata()
      {
      }

      public string ContactCompanyName { get; set; }

      public string ContactEmailAddress { get; set; }

      public string ContactFirstName { get; set; }

      public string ContactLastName { get; set; }

      public string ContactPhoneNumber { get; set; }

      public bool IsClosed { get; set; }

      public int JobTypeID { get; set; }

      public JobTypes JobTypes { get; set; }

      public People People { get; set; }

      public int PersonID { get; set; }

      public DateTime RequestDate { get; set; }

      public int RequestID { get; set; }
    }
  }

  // The MetadataTypeAttribute identifies RolesMetadata as the class
  // that carries additional metadata for the Roles class.
  [MetadataTypeAttribute(typeof(Roles.RolesMetadata))]
  public partial class Roles
  {

    // This class allows you to attach custom attributes to properties
    // of the Roles class.
    //
    // For example, the following marks the Xyz property as a
    // required property and specifies the format for valid values:
    //    [Required]
    //    [RegularExpression("[A-Z][A-Za-z0-9]*")]
    //    [StringLength(32)]
    //    public string Xyz { get; set; }
    internal sealed class RolesMetadata
    {

      // Metadata classes are not meant to be instantiated.
      private RolesMetadata()
      {
      }

      public int ID { get; set; }

      public string RoleName { get; set; }

      public EntityCollection<Users> Users { get; set; }
    }
  }

  // The MetadataTypeAttribute identifies UsersMetadata as the class
  // that carries additional metadata for the Users class.
  [MetadataTypeAttribute(typeof(Users.UsersMetadata))]
  public partial class Users
  {

    // This class allows you to attach custom attributes to properties
    // of the Users class.
    //
    // For example, the following marks the Xyz property as a
    // required property and specifies the format for valid values:
    //    [Required]
    //    [RegularExpression("[A-Z][A-Za-z0-9]*")]
    //    [StringLength(32)]
    //    public string Xyz { get; set; }
    internal sealed class UsersMetadata
    {

      // Metadata classes are not meant to be instantiated.
      private UsersMetadata()
      {
      }

      public string Email { get; set; }

      public int ID { get; set; }

      public string Password { get; set; }

      public EntityCollection<Roles> Roles { get; set; }

      public string Username { get; set; }
    }
  }
}
